/**
 *user.js路由器文件中创建路由对象，添加用户注册的路由（post /reg）
 响应‘注册成功’，导出路由器，在app.js文件中引入路由器（./router/user.js）
 将路由器挂载到服务器下，添加前缀/user
 */
//引入express模块
const express=require('express');
//创建路由对象
const r=express.Router();
//引入查询字符串模块
const querystring=require('querystring');
//引入mysql模块
const pool=require('../pool.js');
//console.log(pool);检测是否引入pool
//添加路由
//1.用户注册（post /reg）
r.post('/reg',(req,res)=>{
    //1.1获取post请求的数据
    let obj=req.body;
    console.log(obj);
    //验证各项数据是否为空
    if(obj.uname===''){//
        res.send({code:401,msg:'uname required'});//姓名不能为空
        return;//阻止函数往后指向，就会跳出函数
    }
    //添加其他3项验证
    if(!obj.upwd){
        res.send({code:402,msg:'upwd required'});
        return;
    }
    if(!obj.email){
        res.send({code:403,msg:'email required'});
        return;
    }
    if(!obj.phone){
        res.send({code:404,msg:'phone required'});
        return;
    }
    //1.3执行mysq命令   obj===req.body
    pool.query('insert into xz_user set ?',[obj],(err,result)=>{
        if(err) throw err;
        console.log(result);
        //成功
        res.send({code:200,msg:'reg  suc'});
    });       
});
//2.用户登录(方法为 post url 为  /login)
r.post('/login',(req,res)=>{
    //2.1获取post请求的数据
    let obj=req.body;
    console.log(obj);
    //2.2检测各项数据是否为空
   if(obj.uname===''){
        res.send({code:401,msg:'uname correct'});
        return;
    }
    if(obj.upwd===''){
        res.send({code:402,msg:'upwd correct'});
        return;
    }
    //2.3执行SQL命令
    pool.query('select * from xz_user where uname=? and upwd=?',[obj.uname,obj.upwd],(err,result)=>{
        if(err)throw err;
        console.log(result);
        //根据结果判断是否登录成功
        //如果空数组说明登录失败，否者说明登录成功
        if(result.length===0){
            res.send({code:301,msg:'login err'})
        }else{
            res.send({coed:200,msg:'login suc'})
        }
    });
});
//检测用户是否存在（方法 get  url  /checkUser）
r.get('/checkUser',(req,res)=>{
    let obj=req.query;
    console.log(obj);
    if(obj.uname===''){
        res.send({code:401,msg:'uname required'})
    }
    //执行SQL吗命令
    pool.query('select * from xz_user where uname=? ',[obj.uname],(err,result)=>{
        if(err)throw err;
        console.log(result);
        //如果结果是空数组表示没有此用户，可以使用，否则此用户存在，不可以使用
        if(result.length===0){
            res.send({code:200,msg:'不存在'})
        }else{
            res.send({code:201,msg:'存在'})
        }
    });
});
//4修改数据
r.post('/update',(req,res)=>{
    //4.1获取post请求的数据
    let obj=req.body;
    console.log(obj);
    //4.2验证各项是否为空
    //批量验证
    let k=400;  //初始化变量，用于保存状态吗
    for(let i in obj){
        k++;
        //i代表属性名  obj[k]代表属性值
        //如果属性值为空，则提示对应的属性名是必须的
        if(!obj[i]){
            res.send({code:k,msg:i+'required'});
            return;
        }
    }
    //执行SQL命令
    pool.query('update xz_user set ?  where uid=?',
    [obj,obj.uid],(err,result)=>{
        if (err) throw err;
            console.log(result); 
    
        //结果是对象，如果对象下的affectedRows为0表示修改失败，否则表示成功
        if(result.affectedRows===0){
            res.send({code:301,msg:'update err'});
        }else{
            res.send({code:200,msg:'update suc'});
        }
    })
});
//4、用户列表
//pno页码  pageSize每页数据
r.get('/list',(req,res)=>{
    //4.1查询字符串获取的数据
    let obj=req.query;
    //console.log(obj);
    //4.2如果页码为空默认为1
    if(obj.pno==='' || obj.pno<1){
        obj.pno=1;
    }
    //设置每页显示的数量为4
    if(obj.pageSize===''|| obj.pageSize<1){
        obj.pageSize=4;
    }
    //4.3将每页的数据转为整型
    obj.pageSize=parseInt(obj.pageSize);
    pool.query('select * from xz_user limit ?,?',
    [(obj.pno-1)*obj.pageSize,obj.pageSize],
    (err,result)=>{
        if(err) throw err;
        //console.log(result);
        res.send(result);
    });  
});
//5.删除接口  删除用户
r.get('/delete',(req,res)=>{
    //5.1获取查询字符串传递的数据
    let obj=req.query;
    console.log(obj);
    //5.2判断输入的数据是否为空
    if (obj.uid==='') {
        res.send({code:401,msg:'请输入编号'});
        return;
    }
    //5.3删除数据
    pool.query('delete from xz_user where uid=?',[obj.uid],(err,result)=>{
       if (err) throw err;
       console.log(result)
       //5.4判断删除数据是否成功,如果对象下的affectedRows属性为1，删除成功   为0表示删除失败
       if(result.affectedRows===1){
           res.send({code:200,msg:'delete suc'});
       }else{
           res.send({code:301,msg:'delete err'});
       }
    });
})
//导出路由器对象
module.exports=r;